iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0

今天結膜炎,看完醫生整個白天都躺在床上眼睛癢得要死動不了,晚餐後好一點,寫一點昨天缺漏的小東西

講個優惠券設定的小故事,疫情升3級後被趕到城市另一邊的大樓上班,那邊有很便宜的果汁,還有不少老店,大概是疫情加上數位轉型的迫切吧,有些老店紛紛導入數位會員制與線上訂餐,一整個現代了起來,但不知道是不是賣給它們這套系統的Oxxard業務沒有教好它們要怎麼用,於是發生一些良心被譴責但又覺得好爽的事情

新會員見面禮很常見吧,通常都是一些不痛不癢的東西,什麼9折阿,送小菜之類的,但不知道這家老店是發了什麼瘋,直接送等值一百元的抵用券,哇爽爆了,要知道一個今日便當才99元,而且該店也算是當地的名店,便當不錯吃,店員熱情的招呼我們說加會員送100元,本來還想說一定會有什麼限制吧,結果真的是送一百元,不僅不用加錢超過面額,也沒有任何附加條件,如果你買99元的今日便當,等於免費送便當,好,好喔,更奇妙的還是後頭,這個新會員見面禮居然是一個月送一張的,握草,一個月送你一百元的店家,吃爆,吃了幾個月店員都認出來了,但每個月都用新會員見面禮,店員真的不覺得奇怪嗎.....

檢查是否已經發給過優惠券

加入一個新函數QUY_CPN(self, id, cptype),查詢該類型的優惠券列表

def QUY_CPN(self, id, cptype):
    cur = self.conn.cursor()
    query = sql.SQL("SELECT * from coupon WHERE %s = ANY (userids) and type = %s").format(sql.Identifier('coupon'))
    cur.execute(query, (id, cptype))
    r = cur.fetchall()
    cur.close()
    return r

修改FollowEventHandler

def timedelta_bydays(self, days=7):
    s_time = datetime.now().isoformat()
    e_time = (datetime.now() + timedelta(days=days)).isoformat()
    return s_time, e_time

def gencode(self, mode=0):
    import string, random
    if(mode == 0):
        return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(8))

def INS_CPN(self, id, cptype):
    if(cptype == "new" or cptype == "back"):
        code = self.gencode()
        s_time, e_time = self.timedelta_bydays(days=7)
        cur = self.conn.cursor()
        id = '{' + id + '}'
        query = sql.SQL("INSERT INTO {}(type, code, s_time, e_time, times, userids) VALUES (%s, %s, %s, %s, %s, %s);").format(sql.Identifier('coupon'))
        cur.execute(query, (cptype, code, s_time, e_time, str(1), id))
        self.conn.commit()
        cur.close()
        return 1, code
    else:
        print()
        return 0, "placeholder Due no coupon"

@handler.add(FollowEvent)
def handle_follow(event):
  prof = line_bot_api.get_profile(event.source.user_id)
  r = dbpm.INS_UPD_cus(prof)
  if r == 1:
      msg = "Hello 歡迎鐵人賽的勇者"
      cpl = dbpm.QUY_CPN(event.source.user_id, "new")
      if(cpl and len(cpl) > 0):
          app.logger.debug(f"已經發過優惠券:{cpl}")
      else:
          cr, code = dbpm.INS_CPN(event.source.user_id, "new")
          if(cr == 1):
              msg = msg + f"\n這是您的好友見面禮:{code}"
  else:
      msg = "Hello 歡迎鐵人賽的勇者回來"
      cpl = dbpm.QUY_CPN(event.source.user_id, "back")
      if(cpl and len(cpl) > 0):
          app.logger.debug(f"已經發過優惠券:{cpl}")
      else:
          cr, code = dbpm.INS_CPN(event.source.user_id, "back")
          if(cr == 1):
              msg = msg + f"\n這是您的回歸小禮物:{code}"
  
  line_bot_api.reply_message(
      event.reply_token,
      TextSendMessage(text=msg))

https://ithelp.ithome.com.tw/upload/images/20211002/20140853jMVpvdfUOY.png

等眼睛好一點,趕快寫完訂單頁面.....


上一篇
[day18] 追蹤 & 封鎖事件處理
下一篇
[day20]談購物流程設計
系列文
openAPI 對接實務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言